package com.dyna.mapper;

import com.dyna.core.LambdaQueryWrapperX;
import com.dyna.foundation.domain.dto.MenuDto;
import com.dyna.foundation.domain.entity.SysMenu;
import com.dyna.foundation.domain.req.SysMenuListReq;
import com.dyna.foundation.domain.resp.SysMenuPageResp;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
* @author zhoucaiwang
*/

@Mapper
public interface SysMenuMapper extends BaseMapperX<SysMenu> {

    default SysMenu selectByParentIdAndName(Long parentId, String name) {
        return selectOne(SysMenu::getParentId, parentId, SysMenu::getName, name);
    }

    default SysMenu selectByComponentName(String componentName) {
        return selectOne(SysMenu::getComponentName, componentName);
    }

    default Long selectCountByParentId(Long parentId) {
        return selectCount(SysMenu::getParentId, parentId);
    }

    default List<SysMenu> selectList(SysMenuListReq reqVO) {
        return selectList(new LambdaQueryWrapperX<SysMenu>()
                .likeIfPresent(SysMenu::getName, reqVO.getName())
                .eqIfPresent(SysMenu::getStatus, reqVO.getStatus()));
    }

    /**
     * 查询菜单
     * @param req 查询条件
     * @return List<SysMenuPageResp>
     */
    List<SysMenuPageResp> querySysMenuPage(@Param("req") SysMenu req);

    /**
     * 查询所有菜单列表
     * @return List<MenuDto>
     */
    List<MenuDto> queryMenuList();

    /**
     * 根据角色id查询菜单列表
     * @param roleList 角色id列表
     * @return List<SysMenu>
     */
    List<SysMenu> querySysMenuByRoleIds(@Param("roleList") List<Long> roleList);


}




